
package models;
import java.util.*;
import javax.persistence.*;
import play.data.format.*;
import play.data.validation.*; 


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;


import play.db.jpa.*;


@Entity
//@Table(name="participante")
public class Participante{
    @Id 
    @Constraints.Required    
    public Integer numParticipante;
    @ManyToOne(cascade = CascadeType.MERGE)
    public  Sorteo sorteo;
    @ManyToOne(cascade = CascadeType.MERGE)
    public  Persona persona;   
    
    @Transient
    public Integer codigo;
    @Transient
    public Integer numero;
    @Transient
    public Integer idSorteo;
    
    @Formats.DateTime(pattern="yyyy-MM-dd")
    public Date fechaInscripcion;
    public Integer indicadorSorteado;
    public Integer indicadorGanador;
    
    
    public static Participante findById(Integer numParticipante) {
        return JPA.em().find(Participante.class, numParticipante);
    }
    
    public void update(Integer numParticipante) {
        this.numParticipante = numParticipante;
        JPA.em().merge(this);
    }
    public void setSorteo(Sorteo s){
        sorteo = s;
    }
    public void setPersona(Persona s){
        persona=s;
    }

    public void save() {
        System.out.println("Grabando nuevo participante...");        
        JPA.em().persist(this);
    }
    public void delete() {
    JPA.em().remove(this);
    }
    
    public static Page page(){
        List<Participante> participantes =  JPA.em().createQuery("from Participante").getResultList();
        return new Page(participantes);
    }
    public static Page pageListarSorteos(Integer sorteo){
        List<Participante> participantes =  JPA.em().createQuery("from Participante where Sorteo_codSorteo = "+sorteo).getResultList();
        return new Page(participantes);
    }
       
    public static class Page{
        private final List<Participante> list;
        
        public Page(List<Participante> data){
            this.list = data;
        }    
        public  List<Participante> getList(){
            return list;            
        }
    
    }

    
}